/**
 * 
 */
package com.base.myproject.client.ui;

import java.util.HashMap;
import java.util.List;

import com.base.myproject.client.HR.bcode.BcodeSelectDialog;
import com.base.myproject.client.busi.BO.TreeNodeModelData;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.layout.TableData;
import com.extjs.gxt.ui.client.widget.layout.TableLayout;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel.CheckNodes;

/**
 * 通用查询的查询界面，可以通过此类获取到每个参数的值，最后做查询的时候提供这些参数和参数的值
 * 提供的查询按钮会被查询界面做点击的事件侦听，由其他查询进行数据的载入。也就是说该类只提供参数的
 * 值和查询按钮。
 * QueryGoodsBcode 中有使用
 * 
 *  bsd_add = new BcodeSelectDialog<TreeNodeModelData>(){
				public void doposted(List<TreeNodeModelData> modeldatalist) {
					if(modeldatalist.size()>0)
					{
						this.setEmptyText("已经选择了数据");
					
					}
				}

			};
			
			bsd_add.setNeesreselect(false);
			bsd_add.setEmptyText("未选择数据");
			bsd_add.setName("部门人员");
			bsd_add.setCheckNodes(CheckNodes.BOTH);
			qf.setCollapsible_atquery(true);
		qf.addField("BCODE",bsd_add );
		qf.getQuerybutton().addListener(Events.Select, getListener());
		//结束后调用
		qf.initcomplete();
		
		查询的时候调用qf.doquery(); 会见查询界面缩起来
 * @author zgw
 *2009-10-23 下午02:09:24
 * javazgw@gmail.com
 */
public class QueryForm extends ContentPanel {
	HashMap<String,Field> hm  =new HashMap<String,Field>();
	Button querybutton = new Button("查询");
	boolean collapsible_atquery =false;
	public QueryForm()
	{
		init();
	}
	protected void init()
	{
		this.setCollapsible(true);
		initWidgetx();
	}
	private void initWidgetx() {
		
		this.setHeading("查询");
		
	}
	/**
	 * @return the querybutton
	 */
	public Button getQuerybutton() {
		return querybutton;
	}
	/**
	 * @param querybutton the querybutton to set
	 */
	public void setQuerybutton(Button querybutton) {
		this.querybutton = querybutton;
	}
	public void addField(String name,Field f)
	{
		hm.put(name, f);
	}
	public HashMap<String,Field> getQueryParams()
	{
		return hm;
	}
//	/**
//	 * 设置可以关闭
//	 */
//	public void setCollapsible(boolean collapsible)
//	{
//		super.setCollapsible(collapsible);
//	}
	
	public void doquery()
	{
		if(collapsible_atquery)
		{
			this.setExpanded(false);
		}
	}
	/**
	 * 添加控件完成都调用
	 */
	public void initcomplete()
	{
		TableLayout tl = new TableLayout(4);
		TableData td = new TableData();
		td.setColspan(1);
		td.setRowspan(1);
		td.setPadding(2);
		this.setLayout(tl);
		for(String name :hm.keySet())
		{
			Field f = hm.get(name);
			
			this.add(new LabelField(f.getName()+":"));
			this.add(f);
			
			
		}
		this.add(querybutton);
	}
	public boolean isCollapsible_atquery() {
		return collapsible_atquery;
	}
	public void setCollapsible_atquery(boolean collapsibleAtquery) {
		collapsible_atquery = collapsibleAtquery;
	}
	public HashMap<String,String> getMacro()
	{
		HashMap<String,String> macrohm =new HashMap<String,String >();//放入宏定义
		for(String name :hm.keySet())
		{
			Field f = hm.get(name);
			
	
			if(f.getValue()!=null && f.getValue() instanceof ModelData)
			{
				macrohm.put(name, ((ModelData)f.getValue()).get("code").toString());
			}
			else 
			{
				macrohm.put(name, (f.getValue().toString()));
			}
			
		}
		
		return macrohm;
	}

}
